package com.woniuxy.educationplatform.mapper;

import com.woniuxy.educationplatform.bean.RoleBean;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @author unreleased
 * @date 2020/12/10 16:10
 */
@Mapper
public interface RoleMapper {
    /**
     * 通过id查询角色有关信息
     * @param id id
     * @return RoleBean对象
     */
    @Select("select id ,role_name,role_desc,create_time from role_info where status = 0 and id = #{id}")
    RoleBean findRoleById(Integer id);

    /**
     * 查询所有的角色信息
     * @return 包含所有正常角色的一个List集合
     */
    @Select("select id,role_name,role_desc,create_time from role_info where status = 0")
    List<RoleBean> findAllRoles();

    /**
     * 查询所有角色
     * @return 所有角色 包括禁用的
     */
    @Select("select id,role_name,role_desc,create_time,status from role_info ")
    List<RoleBean> findRoleList();

    /**
     * 根据管理员ID删除对应的管理员
     * @param id 前端对应id
     * @return 返回收影响的条数
     */
    @Delete("delete from role_info where id = #{id}")
    int delRoleById(Integer id);

    /**
     *
     * 用于超级管理员修改角色信息
     * @param roleBean 修改的数据
     * @return 数据库受影响条数 判断是否修改成功
     */
    @Update("<script>" +
            "update role_info" +
            "<set>" +
            "<if test='r.roleName != null'>" +
            " role_name = #{r.roleName}," +
            "</if>" +
            "<if test='r.roleDesc != null'>" +
            " role_desc = #{r.roleDesc}," +
            "</if>" +
            "<if test='r.status != null'>" +
            " status = #{r.status}," +
            "</if>" +
            "</set>" +
            "where id = #{r.id}" +
            "</script>")
    int updateRoleById(@Param("r") RoleBean roleBean);

    /**
     * 新增角色
     * @param roleBean 携带信息的adminBean对象
     * @return 是否添加成功
     */
    @Insert("insert into role_info (role_name,role_desc,create_time) values (#{r.roleName},#{r.roleDesc},NOW())")
    int saveRole(@Param("r") RoleBean roleBean);
}
